import java.util.function.Predicate;

/*
Predicate<T> : 常用的四个方法
        boolean test (T t) : 对给定的参数进行判断(判断逻辑由Lambda表达式实现),返回一个布尔值
        default Predicate<T> negate() : 返回一个逻辑的否定，对应逻辑非
        default Predicate<T> and (Predicate other) : 返回一个组合判断，对应短路与
        default Predicate<T> or (Predicate other) : 返回一个组合判断，对应短路或
*/
public class PredicateDemo1 {
    public static void main(String[] args) {
        System.out.println(checkString("Hello",s-> s.length() > 8));
        System.out.println(checkString("HelloWorld",s-> s.length() > 8));
        System.out.println(checkString("Hello world",s-> s.length() > 8,s-> s.length() > 15));
        System.out.println(checkString("Hello",s-> s.length() > 8,s-> s.length() < 15));
    }

  //判断给定的字符串是否满足要求
    private static boolean checkString(String s, Predicate<String> pre){
       // return pre.test(s);
        return  pre.negate().test(s);

    }
    private static boolean checkString(String s, Predicate<String> pre1,Predicate<String> pre2){
        //return pre1.and(pre2).test(s);
        return pre1.or(pre2).test(s);
    }
}
